package com.demo.config;

import org.apache.activemq.command.ActiveMQQueue;
import org.apache.activemq.command.ActiveMQTopic;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jms.config.DefaultJmsListenerContainerFactory;
import org.springframework.jms.config.JmsListenerContainerFactory;
import org.springframework.jms.config.SimpleJmsListenerContainerFactory;

import javax.jms.ConnectionFactory;
import javax.jms.Queue;
import javax.jms.Topic;

/**
 * @author wangzhanjin
 * @date 2018/6/13 19:57
 * 对于监听者，是不需要配置的
 */
@Configuration
public class JmsConfig {
    @Bean
    public Queue queue() {
        //定义一个队列
        return new ActiveMQQueue("ptp.queue");
    }
    @Bean
    public Topic topic() {
        //定义一个队列
        return new ActiveMQTopic("my-topic");
    }
    /**
     * 注意： 在pub/sub模式中，对消息的监听需要对containerFactory进行以下配置
     * @param connectionFactory
     * @return
     */
    @Bean
    JmsListenerContainerFactory<?> myJmsContainerFactory(ConnectionFactory connectionFactory){
        SimpleJmsListenerContainerFactory factory = new SimpleJmsListenerContainerFactory();
        factory.setConnectionFactory(connectionFactory);
        factory.setPubSubDomain(true);
        return factory;
    }
}